1978E - Computing Machine - CodeForces Solution


data structures dp greedy implementation

Please click on ads to support us..

Python Code:

for _ in range(int(input())):
    n = int(input())
    a = input()
    b = input()

    b_modified = list(b)
    for i in range(n - 2):
        if a[i] == a[i + 2] == '0':
            b_modified[i + 1] = '1'
    a_modified = list(a)
    for i in range(n - 2):
        if b_modified[i] == b_modified[i + 2] == '1':
            a_modified[i + 1] = '1'
    
    prefix_sum = [0] * (n + 1)
    for i in range(1, n + 1):
        prefix_sum[i] = prefix_sum[i - 1] + int(a_modified[i - 1])
    
    for _ in range(int(input())):
        l, r = map(int, input().split())

        res = prefix_sum[r] - prefix_sum[l - 1]

        res -= a_modified[l - 1] == '1' and a[l - 1] == '0'
        if l < r:
            res -= a_modified[r - 1] == '1' and a[r - 1] == '0'

        if l + 1 < r:
            res -= a_modified[l] == '1' and a[l] == '0' and (b[l - 1] == '0' or (l + 2 == r and b[r - 1] == '0'))
        if l + 2 < r:
            res -= a_modified[r - 2] == '1' and a[r - 2] == '0' and b[r - 1] == '0'

        print(res)


Comments

Submit
0 Comments
More Questions

1630A - And Matching
1630B - Range and Partition
1630C - Paint the Middle
1630D - Flipping Range
1328A - Divisibility Problem
339A - Helpful Maths
4A - Watermelon
476A - Dreamoon and Stairs
1409A - Yet Another Two Integers Problem
977A - Wrong Subtraction
263A - Beautiful Matrix
180C - Letter
151A - Soft Drinking
1352A - Sum of Round Numbers
281A - Word Capitalization
1646A - Square Counting
266A - Stones on the Table
61A - Ultra-Fast Mathematician
148A - Insomnia cure
1650A - Deletions of Two Adjacent Letters
1512A - Spy Detected
282A - Bit++
69A - Young Physicist
1651A - Playoff
734A - Anton and Danik
1300B - Assigning to Classes
1647A - Madoka and Math Dad
710A - King Moves
1131A - Sea Battle
118A - String Task